package com.ruoyi.ichen.rabbitmq;

import com.rabbitmq.client.*;
import com.ruoyi.ichen.rabbitmq.common.RabbitMQUtils;
import org.springframework.beans.factory.annotation.Autowired;

import javax.xml.ws.Service;

/**
 * @author ichen
 * @version V1.0
 * @ClassName: Customer
 * @Description: rabbitmq消费者
 * @Date 2020/7/26 13:31
 */
public class Customer {

    @Autowired
    private Service service;

    public static void main(String[] args) {
        try {
            //获取连接对象
            Connection connection = RabbitMQUtils.getConnection();
            //获取连接通道
            Channel channel = connection.createChannel();
            channel.basicQos(1);//每次只能消费一个消息
            //通道绑定对应消息队列
            //参数1 队列名称，如果队列不存在自动创建
            //参数2 用来敌营队列特性是否要持久化,true持久化队列， false 不持久化
            //参数3 exclusive 是否独占队列 true 独占队列
            //参数4 autoDelete 是否在消费完成后自动删除队列, true 自动删除
            channel.queueDeclare("hello", false, false, false, null);

            //消费消息
            //参数1 消费那个的消息  队列的名称
            //参数2 开始消息的自动确认机制 消息自动确认, true 消费者自动向rabbitmq确认消息
            //参数3 消费时的回调接口
            String hello = channel.basicConsume("hello", false, new DefaultConsumer(channel) {
                @Override // 最后一个参数 消息队列中取出的消息
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) {
                    System.out.println("new String(body) = " + new String(body));
                }
            });

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
